03 Instalando TypeScript Definitions

Próxima Atividade
  • Sugerir melhoria
Play
Current Time 0:00
/
Duration Time 0:00
Remaining Time -0:00
Stream TypeLIVE
Loaded: 0%
Progress: 0%
0:00
Fullscreen
00:00
Mute
Playback Rate
  • 2x
  • 1.5x
  • 1.2x
  • 1x
  • 0.8x
  • 0.7x
1x
Subtitles
  • subtitles off
Captions
  • captions off
Chapters
  • Chapters
HD
Desculpe-nos pelo transtorno, mas este video não pode ser carregado, tente novamente.

Transcrição

jQuery foi criado com TypeScript? Com certeza não e, se não foi, não possui variáveis, propriedades e parâmetro de métodos e funções tipados. Então, como suportar os recursos da linguagem TypeScript com uma biblioteca que não foi criada utilizando nessa linguagem?

Os criadores da biblioteca ou terceiros podem criar um arquivo chamado TypeScript Declaration File. Este arquivo possui informações dos nomes de métodos e funções, inclusive tipos que podem ser utilizados pelo TypeScript. Quando carregado, o TypeScript conseguirá, baseado nesse arquivo, realizar checagem estática inclusive lançar mão de todos seu poder através de seu editor ou IDE favorita.

No caso, vamos instalar o tipo do jQuery. Vale lembrar que esse tipo não foi definido pela equipe do jQuery:

npm install @types/jquery@2.0.42 --save-dev

Você pode instalar o type definiton da sua biblioteca favorita, contanto que ela exista. Inclusive podem haver arquivos de definições criados por mais de um colaborador, no final, somos nós que devemos escolher o arquivo que for mais atualizado. Não há solução mágica, é necessário realizar pesquisas na Internet. Inclusive, pode ser que nem existe um arquivo tsd para sua biblioteca favorita, sendo assim, a solução com declare var continua sendo válida.

Vamos abrir e fechar o Visual Studio Code. Por padrão, o compilador do TypeScript procurará por padrão todos os @types dentro da pasta node_modules sem termos que nos preocupar.

Agora, com o VSCode reaberto, vamos remover o declare var . Em seguida, vamos usar o tipo jQuery para _elemento, propriedade da nossa classe. Esse tipo não está disponível antes, passou a estar depois de termos instalado o tds do jQuery:

abstract class View<T> {

    private _elemento: JQuery;

    constructor(seletor: string) {

        this._elemento = $(seletor);
    }

    update(model: T) {

        this._elemento.html(this.template(model));
    }

    abstract template(model: T): string;
}

Fantástico! Agora, podemos usar o jQuery na declaração da nossa classe NegociacaoController:

class NegociacaoController {

    private _inputData: JQuery;
    private _inputQuantidade: JQuery;
    private _inputValor: JQuery;
    private _negociacoes = new Negociacoes();
    private _negociacoesView = new NegociacoesView('#negociacoesView');
    private _mensagemView = new MensagemView('#mensagemView');


    constructor() {
        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');
        this._negociacoesView.update(this._negociacoes);
    }

    adiciona(event: Event) {

        event.preventDefault();

        const negociacao = new Negociacao(
            new Date(this._inputData.val().replace(/-/g, ',')), 
            parseInt(this._inputQuantidade.val()),
            parseFloat(this._inputValor.val())
        );

        this._negociacoes.adiciona(negociacao);
        this._negociacoesView.update(this._negociacoes);
        this._mensagemView.update('Negociação adicionada com sucesso');
    }
}
// app/ts/app.ts

const controller = new NegociacaoController();

$('.form').submit(controller.adiciona.bind(controller));

Bibliotecas como Lodash, Underscore, inclusive plugins do jQuery UI possuem seu respectivo arquivo tsd. Um repositório do git que centraliza algumas desses arquivo é https://github.com/DefinitelyTyped/DefinitelyTyped.

Tirar dúvida Próxima Atividade
ícone TypeScript parte 1: Evoluindo seu Javascript

TypeScript parte 1: Evoluindo seu Javascript

100%
Aula05 de 05

TypeScript definitions

Atividades 3 de 10

  • 01 jQuery, tem espaço? 07min
  • 02 Código que não compila
  • 03 Instalando TypeScript Definitions 08min
  • 04 Fazendo o código compilar
  • 05 Para saber mais: o repositório @types
  • 06 Extirpando os comentários do processo de compilação 03min
  • 07 Ajustes finos no tsconfig.json
  • 08 Revisão 03min
  • 09 Consolidando seu conhecimento
  • 10 Considerações finais da parte 1 01min

Aulas

Outros Links

Fórum Trocar Curso
Gravatar de Marcos Katsumi Kay

Marcos Katsumi Kay 34.0k xp

Logo da Alura